@秒灵儿
3年前 提问
1个回答

c语言排序

趣能一姐
3年前

c语言常见的排序算法有以下这些:

  • 冒泡排序法(Bubble Sort):如果有N个数,两两相邻进行比较,将最值沉入最后一位置,要进行N-1轮比较,第一轮要比较N-1次,第2轮只要比较N-1-1次,因为第一次已经把最值沉入最后一位置,故不需在进行比较一次,也就是说每一轮都减少一次,所以第2个for循环中j < n-i;

  • 选择排序(Selection sort):每一轮循环中(也就是第2个for循环)只找到最小值的位置,但并不对数据进行交换,待一轮结束后,判断最小标志是否与当初假设的一样,若不一样,说明其他位置上更小(或大),在对数据进行交换位置,每轮循环只交换一次数据。

  • 希尔排序(Shell’s Sort):希尔排序是第一个突破 O ( n 2 ) O(n^2) O(n2)的排序算法,是简单插入排序的优化,实质是分组的简单插入排序。它与插入排序的不同之处在于,它会优先比较距离较远的元素(每次取相隔一定间隔gap的元素作为一组,在组内执行简单插入排序)。希尔排序又叫缩小增量排序(不断减小间隔gap的数组,直到gap=1)。

  • 快速排序(Quicksort):先从数列中取出一个数作轴值(基准数)pivot,根据基准数将数列进行分区,小于基准数的放左边,大于基准数的放右边,重复分区操作,知道各区间只有一个数为止。